package com.ebei.admin.service;


import com.baomidou.mybatisplus.service.IService;
import com.ebei.admin.model.dto.MenuTree;
import com.ebei.admin.model.entity.SysMenu;
import com.ebei.common.vo.MenuVO;

import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 菜单服务接口
 *
 * @author crazypenguin
 * @version 1.0
 * @created 2018/4/17
 */
public interface SysMenuService extends IService<SysMenu> {
    /**
     * 通过角色名称查询URL 权限
     *
     * @param role 角色名称
     * @return 菜单列表
     */
    Set<MenuVO> findMenuByRole(String role);

    /**
     * 通过角色获取菜单权限列表
     *
     * @param roles 角色
     * @return 权限列表
     */
    String[] findPermission(String[] roles);

    /**
     * 级联删除菜单
     *
     * @param id   菜单ID
     * @param role 角色
     * @return 成功、失败
     */
    Boolean deleteMenu(Integer id, String role);

    /**
     * 更新菜单信息
     *
     * @param sysMenu 菜单信息
     * @param role    角色
     * @return 成功、失败
     */
    Boolean updateMenuById(SysMenu sysMenu, String role);

    /**
     * 返回角色的菜单
     * @param roleName 角色
     * @return 菜单列表
     */
    List<MenuTree> findUserMenuTree(String roleName);

    /**
     * 根据角色名返回菜单按钮
     * @param roleName
     * @return
     */
    List<MenuTree> findMenuTreeByRoleNameAndDeviceType(String roleName,String deviceType);

    /**
     * 新增获取sort值
     * @param parentId
     * @return
     */
    Integer getSort(Integer parentId,String deviceType);

    /**
     * 根据用户id获取关联菜单
     * @param params
     * @return
     */
    List<MenuVO> selectMenuListByUserId(Map<String, Object> params);

}
